package com.gxh.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.pagehelper.Page;
import com.gxh.annotation.AutoFill;
import com.gxh.dto.MachinePageQueryDTO;
import com.gxh.dto.UserMachinePageQueryDTO;
import com.gxh.entity.Machine;
import com.gxh.enumeration.OperationType;
import com.gxh.vo.MachineItemVO;
import com.gxh.vo.MachineKWResultVO;
import com.gxh.vo.MachineVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Update;

import java.util.List;

@Mapper
public interface MachineMapper extends BaseMapper<Machine> {

    /**
     * 分页查询
     * @param machinePageQueryDTO
     * @return
     */
    Page<MachineVO> pageQuery(MachinePageQueryDTO machinePageQueryDTO);

    /**
     * 新增设备
     * @param machine
     */
    @AutoFill( value = OperationType.INSERT)
    void insertMachine(Machine machine);

    /**
     * 修改设备
     * @param machine
     */
    @AutoFill( value = OperationType.UPDATE)
    void updateMachine(Machine machine);

    /**
     * 用户端分页查询
     * @param machinePageQueryDTO
     * @return
     */
    Page<MachineItemVO> UserPageQuery(UserMachinePageQueryDTO machinePageQueryDTO);

    /**
     * 关键词搜索
     * @param keyword
     * @return
     */
    List<MachineKWResultVO> search(String keyword);

    /**
     * 最新设备
     * @return
     */
    List<MachineItemVO> getNew();

    /**
     * 根据id查询设备
     * @param machineIds
     * @return
     */
    List<MachineItemVO> getByIds(List<Long> machineIds);

    /**
     * 推荐设备
     * @return
     */
    List<MachineItemVO> getRecommend();

    /**
     * 在工厂的设备
     * @return
     */
    List<MachineItemVO> getInFactory();

    /**
     * 浏览量加1
     * @param machineId
     */
    @Update("update machine set view_count = view_count + 1 where id = #{machineId}")
    void incrementViewCount(Long machineId);
}
